//#include <iostream>
//#include <string>
//
//using namespace std;
//
//void func(char target, string& str)
//{
//    if (target >= 'A' && target <= 'Z')
//        str += target;
//    else
//        str += target - 'a' + 'A';
//}
//
//int main()
//{
//    string target;
//    getline(cin, target);
//
//    string ans;
//    func(target[0], ans);
//
//    int size = target.size();
//    for (int i = 0; i < size; ++i)
//    {
//        if (target[i] == ' ' && i + 1 < size)
//            func(target[i + 1], ans);
//    }
//
//    cout << ans << endl;
//    return 0;
//}


//
#include <iostream>
#include <queue>

using namespace std;

int main()
{
    int n = 0, k = 0;
    cin >> n >> k;
    priority_queue<int> pq;
    for (int i = 0; i < n; ++i)
    {
        int num = 0;
        cin >> num;
        pq.push(num);
    }

    while (k--)
    {
        queue<int> q;
        int top = pq.top();
        pq.pop();

        while (top % 2 && !pq.empty())
        {
            q.push(top);
            top = pq.top();
            pq.pop();
        }

        if (top % 2 == 0)
        {
            top /= 2;
        }
        pq.push(top);
        while (!q.empty())
        {
            int front = q.front();
            q.pop();
            pq.push(front);
        }
    }

    int sum = 0;
    while (!pq.empty())
    {
        int top = pq.top();
        pq.pop();
        sum += top;
    }
    cout << sum << endl;
    return 0;
}